Rendering in a printer using bands

ABSTRACT

A page may be divided into several blocks which do not span the entire width of a page. A bit map representing the page content may be generated by rendering the display lists representing the blocks. According to another aspect, a display list may be generated associated with a big portion of a page. The big portion may be divided into smaller portions at/before rendering, and bit maps may be generated for the smaller portions.

BACKGROUND OF THE INVENTION

[0001] 1. Field of the Invention

[0002] The present invention relates to printers, and more specificallyto a method and apparatus for rendering in a printer using bands.

[0003] 2. Related Art

[0004] Printers are often used to print a specified content (receivedfrom an external system such as personal computers) on medium such aspaper. The content to be printed (for example, a page) is typicallyspecified by page description languages (PDL) such as Postscript (PS)and printer control language (PCL), as is well known in the relevantarts. Printing generally entails converting a page content specified bya PDL to a corresponding bit map. The bit map may then be used to printthe content on the desired medium.

[0005] A page is often divided into bands. A band generally refers to arectangular section spanning the entire width of the page. A bit map isgenerally generated for each band, and the page content for the band isprinted using the bit map. All the bands of a page may thus be printedto generate the corresponding page.

[0006] To facilitate the generation of a bit map for a band with minimalmemory, printers often divide a band into sub-bands. A display list(containing lower level primitives such as trapezoids and lines) istypically generated associated with each sub-band. A bit map for thesub-hand is generated using the display list. The generation of such abit map is often referred to as rendering. A bit map for the entire bandwould be generated by rendering all the contained sub-bands.

[0007] In general, the approaches generating a page content need to beimplemented while potentially meeting several requirements (e.g., memoryrequirement, throughput performance, etc.). What is therefore needed isa method and apparatus which enables rendering while meeting one or moreof such requirements.

SUMMARY OF THE INVENTION

[0008] According to an aspect of the present invention, a printercontroller may divide a page into multiple blocks which do not span theentire width of a page. Display lists are generated covering the blocks,and a rendering module renders the display list to generate a pagecontent for printing on the page. Due to the use of blocks which do notspan the entire page width, potential advantages such as minimization ofprocessing and/or memory requirements may be realized.

[0009] According to another aspect of the present invention, aninterpreter in a printer controller divides a page into several bigportions, and a display list is generated associated with each bigportion according to PDL statements defining a page content. Eachdisplay list may be rendered multiple times to generate a correspondingnumber of smaller portions. As a result, the number of list elements maybe minimized and the memory requirements may also be correspondinglyreduced.

[0010] In an implementation, coordinates representing the division ofeach bit portion into smaller portion, may be stored. A rendering modulemay perform clipping using the coordinates to render only the portionsrepresenting the smaller portion. In one embodiment, each smaller blockcorresponds to a block which does not span the entire width of a page.

[0011] Further features and advantages of the invention, as well as thestructure and operation of various embodiments of the invention, aredescribed in detail below with reference to the accompanying drawings.In the drawings, like reference numbers generally indicate identical,functionally similar, and/or structurally similar elements. The drawingin which an element first appears is indicated by the leftmost digit(s)in the corresponding reference number.

BRIEF DESCRIPTION OF THE DRAWINGS

[0012] The present invention will be described with reference to theaccompanying drawings, wherein:

[0013]FIG. 1 is a block diagram illustrating the details of an exampleprinter;

[0014]FIG. 2A is a flow chart illustrating the manner in which a pagemay be divided;

[0015]FIG. 2B is a block diagram illustrating the details of an examplepage divided according to an aspect of the present invention;

[0016]FIG. 3 is a flow chart illustrating the manner in which displaylists are generated and rendered according to an aspect of the presentinvention;

[0017]FIG. 4 is a block diagram illustrating the details of anembodiment of a printer controller; and

[0018]FIG. 5 is a block diagram illustrating the details of anembodiment of a printer controller implemented substantially inhardware.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0019]1. Overview and Discussion of the Invention

[0020] An aspect of the present invention enables a page to be dividedinto several blocks which do not span the entire width of a page. A bitmap representing the page content may be generated by rendering thedisplay lists representing the blocks. Due to the feature that the pageneed not span the entire page width, several advantages may bepotentially realized as described below with reference to exampleenvironments.

[0021] Another aspect of the present invention enables a display list tobe generated associated with a big portion of a page. However, the bigportion may be divided into smaller portions at/before rendering, andbit maps may be generated for the smaller portions. By storing displaylists only for the big portions, the memory requirements for storing thedisplay lists may be reduced.

[0022] Several aspects of the invention are described below withreference to example environments for illustration. It should beunderstood that numerous specific details, relationships, and methodsare set forth to provide a full understanding of the invention. Oneskilled in the relevant art, however, will readily recognize that theinvention can be practiced without one or more of the specific details,or with other methods, etc. In other instances, well-known structures oroperations are not shown in detail to avoid obscuring the invention.

[0023] 2. Example Printer

[0024]FIG. 1 is a block diagram illustrating the details of anembodiment of printer 100 in accordance with the present invention.Printer 100 is shown containing printer controller 130 and printerengine 170. Each component is described in further detail below.

[0025] Printer engine 170 receives on path 137 a bitmap (representingthe page content to be printed) suitable in format for printing, andprints the bit map on medium such as paper. Printer engine 170 can beimplemented in a known way. In an embodiment, printer engine 170 isimplemented using laser technology.

[0026] Printer controller 130 may receive statements (defining a pagecontent to be printed) on path 101, and generates a bitmap representingthe page content. The statements may be received from an externalcomputer system (not shown), and be specified in a page descriptionlanguage (PDL) such as Printer Control Language (PCL) or PostScript,well known in the relevant arts.

[0027] In an embodiment, printer controller 130 may divide a page intoblocks that do not span the entire width of the page. A bit map may begenerated for each block and the generated bit maps may be provided toprinter engine 170 on path 137. The manner in which the page can bedivided and subsequently rendered is described below.

[0028] 3. Method

[0029]FIG. 2A is a flow chart illustrating the manner in which a pagemaybe rendered, according to an aspect of the present invention. Themethod is described with reference to FIG. 1 for illustration. However,the method can be implemented in other printers as well. The methodbegins in step 201, in which control immediately passes to step 210.

[0030] In step 210, a page (received in PDL format) may be divided intoblocks which do not span the entire width of the page. In an embodimentdescribed below, the blocks are rectangular in shape.

[0031] In step 230, display lists may be generated covering the blocksof the page. The generated display lists may be stored in a memory. Instep 240, the bit map for each block may be generated using thecorresponding display list. The bit maps together define the content ofa page to be printed. Once generated, the bit maps may be sent toprinter engine 170 for printing.

[0032] Thus, a page generated in accordance with the present inventioncan be printed in a printer. As noted above, the page is divided intoblocks which do not span the entire page. The manner in which a page maydivided into several blocks is described in further detail withreference to FIG. 2B.

[0033] 4. Example Page

[0034]FIG. 2B is a diagram of page 250 illustrating the manner in whicha page can be divided in an embodiment of the present invention. Page250 is shown containing bands 260,270,280 and 290. Bands 260,270,280 and290 refer to the rectangular blocks that span the entire width of page250. The bitmap corresponding to a band may be stored in a band bufferbefore providing to printer controller 170 as is well known in therelevant Band 260 is shown containing sub-parts 261A through 261-N,262-A through 262-N, 263A through 263-N and 264-A through 264N. As maybe readily observed, the sub-parts do not span the entire width of page250.

[0035] It may be appreciated that using rectangular blocks (not spanningentire page width) can offer several advantages. For example, assumingonly a fixed (or small) amount of memory space is available for eachsub-part; more lines of a block may be stored in the vertical direction,and as objects (in the page content) are upsealed in the verticaldirection often, more lines of data can be generated when processing asingle rectangular block. Another potential advantage is that the memoryrequired to store display lists may be shorter as the objects are morelikely to be within a few of the blocks.

[0036] One problem with the above approach is that a large number ofdisplay lists may be generated with potentially the same display listelements (DLEs) getting replicated in many display lists. This happensbecause the DLEs often spans across multiple sub-bands as the area ofthe sub-bands tends to be relatively small. All the generated displaylists may be required to be stored in memory. Accordingly, a method tominimize memory requirements while storing the display lists isdescribed below.

[0037] 5. Minimizing Memory Requirements

[0038]FIG. 3 is a flow chart illustrating the manner in which displaylists may be generated according to an aspect of the present invention.The method is described with reference to FIG. 2B for illustration. Themethod begins in step 301, in which control immediately passes to step310.

[0039] In step 310, page 250 is divided into several big portions. Instep 330, a display list may be generated for each big portion of page250. The display list thus generated may be stored in a memory. Due tothe division into big portions, the number of display lists may beminimized, and memory requirements may also be correspondingly reduced.

[0040] In step 350, each big portion may be viewed as being divided intoseveral smaller portions. In step 370, a bit map corresponding to eachsmaller portion may be generated by rendering the display listcontaining the smaller portion. Thus, a single display list may be usedto render several sub-parts.

[0041] Thus, a fewer number of display lists may be sufficient to renderall sub-parts of page 250. As a result, fewer display lists need to bestored, thereby potentially reducing memory requirements. The approachof FIG. 3 may be combined with the approach of FIG. 2A as describedbelow.

[0042]6. Combining the Approaches of FIG. 3 and FIG. 2A

[0043] In an embodiment, each smaller portion equals a sub-part of FIG.2B. Accordingly, a big portion (of FIG. 3) contains several sub-parts. Abig portion, thus formed, may be referred to as a logical part. Forexample, in FIG. 2B, subparts 261-A, 261-B, 262-A and 262B may togetherrepresent a logical part.

[0044] In operation, printer controller 130 may generate a display listfor each logical part. The display list may then be rendered multipletimes to generate the bit map related to each sub-part. However, itshould be appreciated that embodiments may be implemented whichimplement only one of the two Figures without implementing the featuresof the other. An embodiment of printer controller 130 which implementssuch a combined approach of FIGS. 2A and 3 is described below in furtherdetail.

[0045] 7. Printer Controller

[0046]FIG. 4 is a block diagram illustrating the details of anembodiment of printer controller 130 implemented in accordance with thepresent invention. Printer controller 130 is shown containing parser405, interpreter 410, rendering scheduler 420, interface code 430,rendering module 450, global variables block 455, and band buffer 460.Each component is described in further detail below.

[0047] Parser 405 ensures that the statements (describing a pagecontent) received on path 101 are consistent with a page descriptionlanguage (PDL), and passes the received statements to interpreter 410.Parser 405 may be implemented in a known way.

[0048] Interpreter 410 converts the statements received in PDL format toa corresponding display list. In an embodiment, interpreter 410generates a display list for each logical part described in the earliersections. For example, with reference to FIG. 2B, a single display listis generated for a logical part containing sub-parts 361-A, 361-B, 362-Aand 362-B. In other words, interpreter 410 may generate display listscorresponding to big portions, thus decreasing the number of displaylists generated for a page. As a result, the memory requirements tostore the display lists may be substantially reduced.

[0049] Rendering scheduler 420 schedules each logical part forsubsequent processing (rendering). One of several well known approachesmay be used to implement rendering scheduler 420.

[0050] Interface code 430 provides the interface between renderingscheduler 420 and source rendering module 450. In general, interfacecode 430 interfaces with rendering scheduler 420, and performs variousinitializations required for rendering modules. In addition, interfacecode 430 indicates the relative coordinates which can be used to divideeach big portion (logical part) into multiple cells. In the scenario ofFIG. 2B, the coordinates of the two corner points of each rectangle maybe used for the division. The coordinates may be stored in globalvariable 455.

[0051] Global variables 455 represents various values used for rendering(and other operations) which generates bit maps representing page 250.Examples of the variables stored may include start and end of linenumbers for the sub-parts, the co-ordinates of the display listscorresponding to each logical part, the respective co-ordinates of thedisplay list that is required to be clipped for corresponding sub-parts,etc.

[0052] Rendering module 450 generates a bitmap for each sub-part of page250 based on the display list provided for each logical part. Ingeneral, rendering needs to be performed to support the specific PDL(e.g., PostScript, Page Description Language) and the interpretationapproach used. Rendering is generally described in a book entitled,“PostScript Language Reference Manual—2nd Edition—Red Book”, availablefrom Adobe Systems Incorporated, which is incorporated in its entiretyherewith.

[0053] In addition, rendering module 450 may need to be implemented togenerate bit maps for the individual sub-parts using the display listsgenerated for the logical parts. In an embodiment, the coordinates ofeach sub-part may be used to clip the portions of the image not relatedto a sub-part being rendered. In other words, assuming a display list isrelated to a logical part containing sub-parts 261-A, 261-B, 262-A and262-B, when a bit map is generated for sub-part 261-B, the imageportions related to the remaining three sub-parts may be clipped usingthe coordinates of sub-part 261-A.

[0054] The clipping can be implemented using one of several knowntechniques. Such a clipping may be needed in addition to any otherclipping required for generating the page content representing theindividual cell. In general, the clipping operations can be combined toreduce the computation requirements. The rendered sub-part (orcorresponding bit maps) may be stored in band buffer 460. The bit mapsmay then be sent on path 137 for printing.

[0055] Thus, using the approaches described above, several embodimentsof printer 100 may be implemented. The embodiments may be implemented ina combination of software, hardware and firmware. The description iscontinued with reference to the manner in which printer controller 130may be implemented substantially in software.

[0056] 8. Software Implementation

[0057]FIG. 5 is a block diagram illustrating the details of printercontroller 130 implemented substantially in software according to anaspect of the present invention. Printer controller 130 is showncontaining input/output (I/O) interface 510, central processing unit(CPU) 530, on-chip memory 540, random access memory (RAM) 550 and engineinterface 570. Each component is described below in further detail.

[0058] Input/output interface 510 provides the interface with anexternal system such as personal computer. I/O interface 510 receivesstatements on path 101 requesting to print a page content specified in apage description language (PDL) such as Printer Control Language (PCL)or PostScript. I/O interface 510 forwards the statements to CPU 530 online 513.

[0059] Engine interface 570 provides an interface between printercontroller 130 and printer engine 170; Lines 598 and 599 togetherrepresent line 137 illustrated in FIG.

[0060] 1. Engine interface 570 may be implemented in a known way.

[0061] On-chip memory 540 generally allows faster accesses in storingand retrieving data, and may be used to store the data requiring fastaccesses. In an embodiment, on-chip memory 540 is used to store therendered bit maps. By storing rendered bit maps in on-chip memory 540,the storing task may not be a bottleneck while CPU 530 renders a bitmap. Such a feature may be particularly important as the precessingspeeds of CPU 530 may improve substantially over time. The bit maps arethen transferred to RAM 550 (which is used to provide band buffer 460).

[0062] RAM 550 may be used to store the instructions prior to execution(by CPU 530). In addition, RAM 550 may be used to implement temporarybuffer 570 and band buffer 560. Secondary memory 540 may contain unitssuch as hard drive (not shown), removable storage (e.g., flash memory,also not shown). Secondary storage 540 may store software instructionsand data (for example, the global parameters), which enable CPU 530 toprovide several features in accordance with the present invention. Thesoftware instructions may be provided to CPU 530 from other sources suchas over a network implemented using protocols such as TCP/IP.

[0063] CPU 530 executes the instructions provided from secondary memoryto process the print statements and generate bit maps representingsub-parts (forming page 250), as described in the previous sections. Theinstructions may also cause the bitmap to be provided to printer engine170 on path 598.

[0064] Thus, the present invention may be implemented using softwarerunning (that is, executing) in printer controller 130. In thisdocument, the term “computer program product” is used to generally referto removable storage unit or hard disk installed in hard drive. Thesecomputer program products are means for providing software to printer100. These computer program products generally contain computer readablemedium providing software to printer controller 130. The computerreadable medium can be provided external to printer controller 130.

[0065] The approaches of above may lead to several advantages. Forexample, systems with memory constraints may save data (e.g., renderedbit maps or display lists) in compressed format. By minimizing thememory requirements, systems may not need to expend the processing powerto compress and decompress the data. In addition, as ‘lossy’ compressiontechniques may not need to be used, the quality of the generated imagesmay be high. 15 While various embodiments of the present invention havebeen described above, it should be understood that theY have beenpresented by way of example only, and not limitation. Thus, the breadthand scope of the present invention should not be limited by any of theabove described exemplary embodiments, but should be defined only inaccordance with the following claims and their equivalents.

What is claimed is:
 1. A method of generating a page content to beprinted on a page, said method comprising: receiving a plurality ofstatements representing said page content; interpreting said pluralityof statements to generate a display list for a big portion of said pageaccording to said plurality of statements; and rendering said displaylist a plurality of times to generate bit maps representing a pluralityof smaller portions, wherein said plurality of smaller portions arecontained in said big portion.
 2. The method of claim 1, wherein saidpage is divided into a plurality of big portions including said bigportion, said method further comprising: generating a display listcorresponding to each of said plurality of big portions; and performingsaid rendering using said display list corresponding to each of saidplurality of big portions to generate a bit map representing said pagecontent.
 3. The method of claim 1, wherein each of said smaller portionscorresponds to a sub-part which does not span an entire width of saidpage.
 4. The method of claim 3, wherein said sub-part corresponds to arectangle.
 5. The method of claim 1, further comprising storing aplurality of coordinates indicating the division of said big portioninto said plurality of smaller portions, wherein said renderingcomprises applying clipping using said plurality of coordinates and saidbig portion to generate said bit maps representing said plurality ofsmaller portions.
 6. A method of generating a page content to be printedon a page, said method comprising: receiving a plurality of statementsrepresenting said page content; dividing said page into a plurality ofblocks which do not span the entire width of said page; interpretingsaid plurality of statements to generate a plurality of display listsfor said plurality of blocks according to said plurality of statements;and rendering said plurality of display lists to generate a plurality ofbit maps representing said page content.
 7. The method of claim 6,wherein each of said plurality of blocks comprises a rectangle.
 8. Aprinter for generating a page content to be printed on a page, saidprinter comprising: a printer controller receiving a plurality ofstatements representing said page content, and interpreting saidplurality of statements to generate a display list for a big portion ofsaid page according to said plurality of statements, said printercontroller rendering said display list a plurality of times to generatebit maps representing a plurality of smaller portions, wherein saidplurality of smaller portions are contained in said big portion; and aprinter engine receiving said bit maps and printing on said pageaccording to said bit maps.
 9. The printer of claim 8, wherein said pageis divided into a plurality of big portions including said big portion,wherein said printer controller generates a display list correspondingto each of said plurality of big portions, and performs clipping usingsaid display list corresponding to each of said plurality of bigportions to generate a bit map representing said page content.
 10. Theprinter of claim 8, wherein each of said smaller portions corresponds toa sub-part which does not span an entire width of said page.
 11. Theprinter of claim 10, wherein said sub-part corresponds to a rectangle.12. The printer of claim 8, wherein said printer controller stores aplurality of coordinates indicating the division of said big portioninto said plurality of smaller portions, wherein said printer controllerperforms clipping using said plurality of coordinates and said bigportion to generate said bit maps representing said plurality of smallerportions.
 13. A printer for generating a page content to be printed on apage, said printer comprising: a printer controller receiving aplurality of statements representing said page content and dividing saidpage into a plurality of blocks which do not span the entire width ofsaid page, said printer controller interpreting said plurality ofstatements to generate a plurality of display lists for said pluralityof blocks according to said plurality of statements, said printercontroller rendering said plurality of display lists to generate aplurality of bit maps representing said page content; and a printerengine receiving said plurality of bit maps and printing on said pageaccording to said plurality of bit maps.
 14. A printer controller forgenerating a page content to be printed on a page, said printercontroller comprising: means for receiving a plurality of statementsrepresenting said page content; means for interpreting said plurality ofstatements to generate a display list for a big portion of said pageaccording to said plurality of statements; and means for rendering saiddisplay list a plurality of times to generate bit maps representing aplurality of smaller portions, wherein said plurality of smallerportions are contained in said big portion.
 15. The printer controllerof claim 14, wherein said page is divided into a plurality of bigportions including said big portion, said printer controller furthercomprising: means for generating a display list corresponding to each ofsaid plurality of big portions; and means for performing said renderingusing said display list corresponding to each of said plurality of bigportions to generate a bit map representing said page content.
 16. Theprinter controller of claim 14, wherein each of said smaller portionscorresponds to a sub-part which does not span an entire width of saidpage.
 17. The printer controller of claim 16, wherein said sub-partcorresponds to a rectangle.
 18. The printer controller of claim 14,further comprising means for storing a plurality of coordinatesindicating the division of said big portion into said plurality ofsmaller portions, wherein said means for rendering performs clippingusing said plurality of coordinates and said big portion to generatesaid bit maps representing said plurality of smaller portions.
 19. Aprinter controller for generating a page content to be printed on apage, said printer controller comprising: means for receiving aplurality of statements representing said page content; means fordividing said page into a plurality of blocks which do not span theentire width of said page; means for interpreting said plurality ofstatements to generate a plurality of display lists for said pluralityof blocks according to said plurality of statements; and means forrendering said plurality of display lists to generate a plurality of bitmaps representing said page content.
 20. The printer controller of claim19, wherein each of said plurality of blocks comprises a rectangle. 21.A computer readable medium carrying one or more sequences ofinstructions for causing a printer to generate a page content suitablefor printing on a page, wherein execution of said one or more sequencesof instructions by one or more processors contained in said printercauses said one or more processors to perform the actions of: receivinga plurality of statements representing said page content; interpretingsaid plurality of statements to generate a display list for a bigportion of said page according to said plurality of statements; andrendering said display list a plurality of times to generate bit mapsrepresenting a plurality of smaller portions, wherein said plurality ofsmaller portions are contained in said big portion.
 22. The computerreadable medium of claim 21, wherein said page is divided into aplurality of big portions including said big portion, furthercomprising: generating a display list corresponding to each of saidplurality of big portions; and performing said rendering using saiddisplay list corresponding to each of said plurality of big portions togenerate a bit map representing said page content.
 23. The computerreadable medium of claim 21, wherein each of said smaller portionscorresponds to a sub-part which does not span an entire width of saidpage.
 24. The computer readable medium of claim23, wherein said sub-partcorresponds to a rectangle.
 25. The computer readable medium of claim21, further comprising storing a plurality of coordinates indicating thedivision of said big portion into said plurality of smaller portions,wherein said rendering comprises applying clipping using said pluralityof coordinates and said big portion to generate said bit mapsrepresenting said plurality of smaller portions.
 26. A computer readablemedium carrying one or more sequences of instructions for causing aprinter to generate a page content to be printed on a page, whereinexecution of said one or more sequences of instructions by one or moreprocessors contained in said printer causes said one or more processorsto perform the actions of: receiving a plurality of statementsrepresenting said page content; dividing said page into a plurality ofblocks which do not span the entire width of interpreting said pluralityof statements to generate a plurality of display lists for saidplurality of blocks according to said plurality of statements; andrendering said plurality of display lists to generate a plurality of bitmaps representing said page content.
 27. The computer readable medium ofclaim 6, wherein each of said plurality of blocks comprises a rectangle.